﻿// ***********************************************************************
// Assembly         : AccesoDatos
// Author           : Diego
// Created          : 03-02-2014
//
// Last Modified By : Diego
// Last Modified On : 03-02-2014
// ***********************************************************************
// <copyright file="AD_Detalle_No_Estructural.cs" company="">
//     Copyright (c) . All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using Modelado.Modulos.ClasesModelado;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/// <summary>
/// The ClasesAccesoDatos namespace.
/// </summary>
namespace AccesoDatos.Modulos.ClasesAccesoDatos
{
    /// <summary>
    /// Class AD_Detalle_No_Estructural.
    /// </summary>
    public class AD_Detalle_No_Estructural
    {
        /*
            
               *  Título: CRE_Detalle_NO_Estructural
               *  Tipo: Método 
               *  Variables: 
             
                DETORDNOEST_codorden
                DETORDNOEST_codmatnoest
                DETORDNOEST_descripcion
                DETORDNOEST_preciomatnoest
                DETORDNOEST_totallineanoest
                DETORDNOEST_cantmaterial             
               *Resumen:  Método recibe informacion del detalle no estructural, hace llamado y ejecucion de Procedimiento Almacenado "CRE_Detalle_NO_Estructural" en la  Base de Datos, 
                          se inserta la linea del detalle en la Base de Datos.
             
               *Retorno: N/A
            
               *Autor: Sofia Rodriguez
             
               *Fecha: 13/07/13
                    
           
                 */
        /// <summary>
        /// Crs the e_ detalle_ n o_ estructural.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="obj">The object.</param>
        public void CRE_Detalle_NO_Estructural(SqlCommand comando, MOD_Detalle_No_Estructural obj)
        {
            try
            {
                string sp = "SP_CRE_Detalle_NO_Estructural";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                
                comando.Parameters.Add(new SqlParameter("@DETORDNOEST_CODORDEN", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@DETORDNOEST_CODMATNOES", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@DETORDNOEST_DESCRIPCION", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@DETORDNOEST_PRECIOMATNOEST", SqlDbType.Decimal));
                comando.Parameters.Add(new SqlParameter("@DETORDNOEST_TOTALLINEANOEST", SqlDbType.Decimal));
                comando.Parameters.Add(new SqlParameter("@DETORDNOEST_CANTMATERIAL", SqlDbType.Decimal));

              
                comando.Parameters[0].Value = obj.DETORDNOEST_codorden;
                comando.Parameters[1].Value = obj.DETORDNOEST_codmatnoest;
                comando.Parameters[2].Value = obj.DETORDNOEST_descripcion;
                comando.Parameters[3].Value = obj.DETORDNOEST_preciomatnoest;
                comando.Parameters[4].Value = obj.DETORDNOEST_totallineanoest;
                comando.Parameters[5].Value = obj.DETORDNOEST_cantmaterial;
               
                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        /*
            
               *  Título: SEL_Grid_Detalle_No_Estructural
               *  Tipo: metodo
               *  Variables: 
                    DETORDNOEST_codlinea
                    DETORDNOEST_material
                    DETORDNOEST_descripcion
                    DETORDNOEST_preciomatnoest
                    DETORDNOEST_totallineanoest
                    DETORDNOEST_cantmaterial
            
               *Resumen:  Método recibe informacion del detalle no estructural, hace llamado y ejecucion de Procedimiento Almacenado "CRE_Detalle_NO_Estructural" en la  Base de Datos, 
                          se inserta la linea del detalle en la Base de Datos.
             
               *Retorno: N/A
            
               *Autor: Sofia Rodriguez
             
               *Fecha: 13/07/13
                    
           
                 */
        /// <summary>
        /// Ses the l_ grid_ detalle_ no_ estructural.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="codOrden">The cod orden.</param>
        /// <returns>List{MOD_Detalle_No_Estructural}.</returns>
        public List<MOD_Detalle_No_Estructural> SEL_Grid_Detalle_No_Estructural(SqlCommand comando, int codOrden)
        {
            try
            {
                string sp = "SP_SEL_Detalle_No_EstructuralByOrden";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@DETORDNOEST_CODORDEN", SqlDbType.Int));
                comando.Parameters[0].Value = codOrden;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<MOD_Detalle_No_Estructural> lista = new List<MOD_Detalle_No_Estructural>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    MOD_Detalle_No_Estructural obj = new MOD_Detalle_No_Estructural();
                    obj.DETORDNOEST_codlinea = Convert.ToInt32(dt.Rows[i]["DETNOEST_CODLINEA"]);
                    obj.DETORDNOEST_material = dt.Rows[i]["MATNOEST_DESCRIPCION"].ToString();
                    obj.DETORDNOEST_descripcion = dt.Rows[i]["DETNOEST_DESCRIPCION"].ToString();
                    obj.DETORDNOEST_preciomatnoest = Convert.ToDecimal(dt.Rows[i]["DETNOEST_PRECIOMATNOEST"]);
                    obj.DETORDNOEST_totallineanoest = Convert.ToDecimal(dt.Rows[i]["DETNOEST_TOTALINEAMATNOEST"]);
                    obj.DETORDNOEST_cantmaterial = Convert.ToDecimal(dt.Rows[i]["DETNOEST_CANTMATERIAL"]);

                    lista.Add(obj);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        /// <summary>
        /// Ses the l_ cant_ det.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="codOrden">The cod orden.</param>
        /// <returns>System.Int32.</returns>
        public int SEL_Cant_Det(SqlCommand comando, int codOrden)
        {
            try
            {
                string sp = "SP_SEL_DETALLENOEST_LINEAByORDEN";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@DETNOEST_CODORDEN", SqlDbType.Int));
                comando.Parameters[0].Value = codOrden;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                int cant_detnoest = 0;

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    cant_detnoest = Convert.ToInt32(dt.Rows[i]["CANT_LINEADET"]);
                    
                }


                return cant_detnoest;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        /// <summary>
        /// Ses the l_ total_ n o_ estructural.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="codOrden">The cod orden.</param>
        /// <returns>System.Decimal.</returns>
        public decimal SEL_Total_NO_Estructural(SqlCommand comando, int codOrden)
        {
            try
            {
                string sp = "SP_SEL_TotalNoEstByOrden";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();
                decimal total_est = 0;
                comando.Parameters.Add(new SqlParameter("@DETORDNOEST_CODORDEN", SqlDbType.Int));
                comando.Parameters[0].Value = codOrden;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];


                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    total_est = Convert.ToInt32(dt.Rows[i]["TOTAL_ORDEN"]);


                }

                return total_est;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        /// <summary>
        /// Des the l_ detalle_ no_ estructural.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="Codigo">The codigo.</param>
        public void DEL_Detalle_No_Estructural(SqlCommand comando, int Codigo)
        {
            try
            {
                string sp = "SP_DEL_Detalle_No_Estructural";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@DETORDNOEST_CODLINEA", SqlDbType.Int));

                comando.Parameters[0].Value = Codigo;

                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

   


    }
}
